System and method for visualization of items in an environment using augmented reality

ABSTRACT

Systems and methods for visualization of an item in an environment using augmented reality are provided. Environment image data containing an image of an environment is received. A selection of an item for placement into an indicated location of the environment is received. An item image of the selected item is scaled based on dimensions determined from the environment image data for the environment. The scaled item image is augmented into the image of the environment at the indicated location to generate an augmented reality image. The augmented reality image is displayed on a device of a user, whereby the scaled item image in the augmented reality image is selectable to cause display of information. A selection of the scaled item image is received. In response to the selection of the scaled item image, the information is presented on the device of the user.

PRIORITY

This application is a continuation of and claims the benefit of priorityto U.S. patent application Ser. No. 16/162,153, filed on Oct. 16, 2018,Ser. No. 16/162,153 is a continuation of and claims the benefit ofpriority to U.S. patent application Ser. No. 15/250,588, filed on Aug.29, 2016, Ser. No. 15/250,588 is a continuation of and claims thebenefit of priority to U.S. patent application Ser. No. 13/283,416,filed on Oct. 27, 2011, which are hereby incorporated by referenceherein in their entirety.

FIELD

The present disclosure relates generally to image processing, and in aspecific example embodiment, to visualization of items in an environmentusing augmented reality.

BACKGROUND

Conventionally, when an individual shops for an item, the individualmust mentally visualize what the item will look like in the environmentthat the individual intends to place the item. Often, the individual hasdifficulty imagining the item with proper dimensions and orientation. Insome cases, the individual may purchase the item only to realize thatthe item does not ideally fit in the environment. As a result, theindividual may end up returning the item or otherwise disposing of theitem (e.g., sell, trade, give away).

BRIEF DESCRIPTION OF DRAWINGS

Various ones of the appended drawings merely illustrate exampleembodiments of the present invention and cannot be considered aslimiting its scope.

FIG. 1 is a block diagram illustrating an example embodiment of anetwork architecture of a system used to determining query aspects.

FIG. 2 is a block diagram illustrating an example embodiment of apublication system.

FIG. 3 is a block diagram illustrating an example embodiment of anaugmented reality engine.

FIG. 4 is a flow diagram of an example high-level method forvisualization of an item in an environment using augmented reality.

FIG. 5 is a flow diagram of an example high-level method for generatingan augmented reality image.

FIG. 6A is a screenshot of an example of an environment image.

FIG. 6B is a screenshot of the environment image with an augmented itemimage.

FIG. 6C illustrates an example screenshot displaying shoppinginformation pertaining to the selected item.

FIG. 6D illustrates an example screenshot displaying a window providingadditional information for the selected item.

FIG. 6E illustrates an example screenshot displaying a window havingrecommendations.

FIG. 7 is a simplified block diagram of a machine in an example form ofa computing system within which a set of instructions for causing themachine to perform any one or more of the methodologies discussed hereinmay be executed.

DETAILED DESCRIPTION

The description that follows includes systems, methods, techniques,instruction sequences, and computing machine program products thatembody illustrative embodiments of the present invention. In thefollowing description, for purposes of explanation, numerous specificdetails are set forth in order to provide an understanding of variousembodiments of the inventive subject matter. It will be evident,however, to those skilled in the art that embodiments of the inventivesubject matter may be practiced without these specific details. Ingeneral, well-known instruction instances, protocols, structures, andtechniques have not been shown in detail.

As used herein, the term “or” may be construed in either an inclusive orexclusive sense. Additionally, although various example embodimentsdiscussed below focus on a marketplace environment, the embodiments aregiven merely for clarity in disclosure. Thus, any type of electronicpublication, electronic commerce, social networking, or electronicbusiness system and method, including various system architectures, mayemploy various embodiments of the system and method described herein andmay be considered as being within a scope of example embodiments. Eachof a variety of example embodiments is discussed in detail below.

Example embodiments described herein provide systems and methods forvisualizing of an item in an environment using augmented reality. Inexample embodiments, environment image data containing an image of anenvironment is received from a client device. A selection of an itemthat is under consideration for purchase and placement into an indicatedlocation of the environment is received. An item image of the selecteditem is scaled to a scale that is based on dimensions determined fromthe environment image data for the environment. The dimensions may bedetermined based on a calculated distance to a focal point of theindicated location in the environment and on a marker located in theimage of the environment. The scaled item image is augmented into theimage of the environment at the indicated location to generate anaugmented reality image. In some embodiments, the scaled item may beoriented to match an orientation of the indicated location in theenvironment.

By using embodiments of the present invention, a user may search for anitem and augment an image of an environment with an image of the item.Because the user can create and view an augmented reality image of theenvironment including the selected item, the user can easily visualizethe selected item in the environment without having to, for example,manually cut and paste or scale the image of the item into the image ofthe environment. Therefore, one or more of the methodologies discussedherein may obviate a need for time consuming data processing by theuser. This may have the technical effect of reducing computing resourcesused by one or more devices within the system. Examples of suchcomputing resources include, without limitation, processor cycles,network traffic, memory usage, storage space, and power consumption.

With reference to FIG. 1, an example embodiment of a high-levelclient-server-based network architecture 100 to enable visualization ofitems in an environment using augmented reality is shown. A networkedsystem 102, in an example form of a network-server-side functionality,is coupled via a communication network 104 (e.g., the Internet, wirelessnetwork, cellular network, or a Wide Area Network (WAN)) to one or moreclient devices 110 and 112. FIG. 1 illustrates, for example, a webclient 106 operating via a browser (e.g., such as the INTERNET EXPLORER®browser developed by Microsoft Corporation of Redmond, Wash. State), anda programmatic client 108 executing on respective client devices 110 and112.

The client devices 110 and 112 may comprise a mobile phone, desktopcomputer, laptop, or any other communication device that a user mayutilize to access the networked system 102. In some embodiments, theclient device 110 may comprise or be connectable to an image capturedevice 113 (e.g., camera, camcorder). In further embodiments, the clientdevice 110 may comprise one or more of a touch screen, accelerometer,microphone, and GPS device. The client devices 110 and 112 may be adevice of an individual user interested in visualizing an item within anenvironment.

An Application Program Interface (API) server 114 and a web server 116are coupled to, and provide programmatic and web interfaces respectivelyto, one or more application servers 118. The application servers 118host a publication system 120 and a payment system 122, each of whichmay comprise one or more modules, applications, or engines, and each ofwhich may be embodied as hardware, software, firmware, or anycombination thereof. The application servers 118 are, in turn, coupledto one or more database servers 124 facilitating access to one or moreinformation storage repositories or database(s) 126. The databases 126may also store user account information of the networked system 102 inaccordance with example embodiments.

In example embodiments, the publication system 120 publishes content ona network (e.g., Internet). As such, the publication system 120 providesa number of publication functions and services to users that access thenetworked system 102. The publication system 120 is discussed in moredetail in connection with FIG. 2. In example embodiments, thepublication system 120 is discussed in terms of a marketplaceenvironment. However, it is noted that the publication system 120 may beassociated with a non-marketplace environment such as an informationalor social networking environment.

The payment system 122 provides a number of payment services andfunctions to users. The payment system 122 allows users to accumulatevalue (e.g., in a commercial currency, such as the U.S. dollar, or aproprietary currency, such as “points”) in their accounts, and thenlater to redeem the accumulated value for products (e.g., goods orservices) that are made available via the publication system 120 orelsewhere on the network 104. The payment system 122 also facilitatespayments from a payment mechanism (e.g., a bank account, PayPal™, orcredit card) for purchases of items via any type and form of anetwork-based marketplace.

While the publication system 120 and the payment system 122 are shown inFIG. 1 to both form part of the networked system 102, it will beappreciated that, in alternative embodiments, the payment system 122 mayform part of a payment service that is separate and distinct from thenetworked system 102. Additionally, while the example networkarchitecture 100 of FIG. 1 employs a client-server architecture, askilled artisan will recognize that the present disclosure is notlimited to such an architecture. The example network architecture 100can equally well find application in, for example, a distributed orpeer-to-peer architecture system. The publication system 120 and paymentsystem 122 may also be implemented as standalone systems or standalonesoftware programs operating under separate hardware platforms, which donot necessarily have networking capabilities.

Referring now to FIG. 2, an example block diagram illustrating multiplecomponents that, in one embodiment, are provided within the publicationsystem 120 of the networked system 102 is shown. In one embodiment, thepublication system 120 is a marketplace system where items (e.g., goodsor services) may be offered for sale. In an alternative embodiment, thepublication system 120 is a social networking system or informationalsystem. The publication system 120 may be hosted on dedicated or sharedserver machines (not shown) that are communicatively coupled to enablecommunications between the server machines. The multiple componentsthemselves are communicatively coupled (e.g., via appropriateinterfaces), either directly or indirectly, to each other and to variousdata sources, to allow information to be passed between the componentsor to allow the components to share and access common data. Furthermore,the components may access the one or more databases 126 via the one ormore database servers 124.

In one embodiment, the publication system 120 provides a number ofpublishing, listing, and price-setting mechanisms whereby a seller maylist (or publish information concerning) goods or services for sale, abuyer can express interest in or indicate a desire to purchase suchgoods or services, and a price can be set for a transaction pertainingto the goods or services. To this end, the publication system 120 maycomprise at least one publication engine 202 and one or more shoppingengines 204. In one embodiment, the shopping engines 204 may supportauction-format listing and price setting mechanisms (e.g., English,Dutch, Chinese, Double, Reverse auctions, etc.).

A pricing engine 206 supports various price listing formats. One suchformat is a fixed-price listing format (e.g., the traditional classifiedadvertisement-type listing or a catalog listing). Another formatcomprises a buyout-type listing. Buyout-type listings (e.g., theBuy-It-Now (BIN) technology developed by eBay Inc., of San Jose, Calif.)may be offered in conjunction with auction-format listings and allow abuyer to purchase goods or services, which are also being offered forsale via an auction, for a fixed price that is typically higher than astarting price of an auction for an item.

A store engine 208 allows a seller to group listings within a “virtual”store, which may be branded and otherwise personalized by and for theseller. Such a virtual store may also offer promotions, incentives, andfeatures that are specific and personalized to the seller. In oneexample, the seller may offer a plurality of items as Buy-It-Now itemsin the virtual store, offer a plurality of items for auction, or acombination of both.

Navigation of the publication system 120 may be facilitated by anavigation engine 210. For example, a search module (not shown) of thenavigation engine 210 enables, for example, keyword searches of listingsor other information published via the publication system 120. In afurther example, a browse module (not shown) of the navigation engine210 allows users to browse various category, catalog, or data structuresaccording to which listings or other information may be classifiedwithin the publication system 120. Various other navigation applicationswithin the navigation engine 210 may be provided to supplement thesearching and browsing applications. In one embodiment, the navigationengine 210 allows the user to search or browse for items in thepublication system 120 (e.g., virtual stores, listings in a fixed-priceor auction selling environment, listings in a social network orinformation system). In alternative embodiments, the navigation engine210 may navigate (e.g., conduct a search on) a network at large (e.g.,network 104). Based on a result of the navigation engine 210, the usermay select an item that the user is interested in augmenting into anenvironment.

In order to make listings or posting of information available via thenetworked system 102 as visually informing and attractive as possible,the publication system 120 may include an imaging engine 212 thatenables users to upload images for inclusion within listings and toincorporate images within viewed listings. In some embodiments, theimaging engine 212 also receives image data from a user and utilizes theimage data to generate the augmented reality image. For example, theimaging engine 212 may receive an environment image (e.g., still image,video) of an environment within which the user wants to visualize anitem. The imaging engine 212 may work in conjunction with the augmentedreality engine 218 to generate the augmented reality image as will bediscussed in more details below.

A listing engine 214 manages listings on the publication system 120. Inexample embodiments, the listing engine 214 allows users to authorlistings of items. The listing may comprise an image of an item alongwith a description of the item. In one embodiment, the listings pertainto goods or services that a user (e.g., a seller) wishes to transact viathe publication system 120. As such, the listing may comprise an imageof a good for sale and a description of the item such as, for example,dimensions, color, and, identifier (e.g., UPC code, ISBN code). In someembodiments, a user may create a listing that is an advertisement orother form of publication to the networked system 102. The listingengine 214 also allows the users to manage such listings by providingvarious management features (e.g., auto-relisting, inventory levelmonitors, etc.).

A messaging engine 216 is responsible for the generation and delivery ofmessages to users of the networked system 102. Such messages include,for example, advising users regarding the status of listings and bestoffers (e.g., providing an acceptance notice to a buyer who made a bestoffer to a seller) or providing recommendations. The messaging engine216 may utilize any one of a number of message delivery networks andplatforms to deliver messages to users. For example, the messagingengine 222 may deliver electronic mail (e-mail), an instant message(IM), a Short Message Service (SMS), text, facsimile, or voice (e.g.,Voice over IP (VoIP)) messages via wired networks (e.g., the Internet),a Plain Old Telephone Service (POTS) network, or wireless networks(e.g., mobile, cellular, WiFi, WiMAX).

An augmented reality engine 218 manages the generation of an augmentedreality based on an environment image and item specified by a user. Theaugmented reality engine 218 will be discussed in more detail inconnection with FIG. 3 below.

Although the various components of the publication system 120 have beendefined in terms of a variety of individual modules and engines, askilled artisan will recognize that many of the items can be combined ororganized in other ways. Alternatively, not all components of thepublication system 120 of FIG. 2 may be utilized. Furthermore, not allcomponents of the marketplace system 120 have been included in FIG. 2.In general, components, protocols, structures, and techniques notdirectly related to functions of exemplary embodiments (e.g., disputeresolution engine, loyalty promotion engine, personalization engines,etc.) have not been shown or discussed in detail. The description givenherein simply provides a variety of exemplary embodiments to aid thereader in an understanding of the systems and methods used herein.

FIG. 3 is a block diagram illustrating an example embodiment of theaugmented reality engine 218. In example embodiments, the augmentedreality engine 218 comprises an access module 300, a distance module302, a sizing module 304, a scaling module 306, an orientation module308, an augmenting module 310, a recommendation module 312, a savemodule 314, and a purchase module 316. In alternative embodiments,functions of one or more of the modules of the augmented reality engine218 may be combined together, one or more of the modules may be removedfrom the augmented reality engine 218, or one or more of the modules maybe located elsewhere in the networked system 102 (e.g., the imagingengine 214, shopping engines 204) or at the client device 110.

In example embodiments, the imaging engine 212 may receive environmentimage data of an environment (e.g., still image, video) from the clientdevice 110. The environment image data is then provided to the augmentedreality engine 218 for processing. In some embodiments, the augmentedreality engine 218 also receives item data for an item that the user isinterested in visualizing in the environment and an indication of alocation where the item is to be augmented in the environment. The itemdata may be provided by the navigation engine 210 based on a userselection of an item found using a search or browsing function of thenavigation engine 210.

Alternatively, the item data may be received from the client device 110.For example, the user may capture an image of an item that the user isinterested in augmenting into the environment (e.g., take a photo of anitem at a store). The user may, in some cases, enter informationregarding the item such as dimensions or an identifier (e.g., UPC code).The augmented reality engine 218 receives the item data from the clientdevice 110.

The access module 300 accesses item data for a selected item. In someembodiments, an item to be augmented into the environment may beselected by a user at the client device and the selection is received,for example, by the navigation engine 210. In other embodiments, theselection is received by the access module 300. Based on the selection,the access module 300 may access information corresponding to theselection. If the selection is an item listing for the item, the accessmodule 300 may access the item listing and extract item data (e.g.,dimensions, images) from the listing. In other examples, if theselection is a user inputted name or other item identifier of an item(e.g., UPC code), the access module 300 may access a catalog (e.g.,stored in the database 126) that stores item data using the itemidentifier.

The distance module 302 determines a distance to a focal point in animage of the environment. The focal point may be a user selected area(also referred to as an “indicated location”) where an item image is tobe augmented. For example, if the environment is a room, the distance toa wall where the item image is to be augmented may be determined. In oneembodiment, the distance module 302 may use a focus capability of theimage capture device 113 of, or coupled to, the client device 110 todetermine the distance. Alternatively, the distance module 302 may usean echo technique using the client device 110 as a sound generator todetermine the distance. For example, the client device 110 may generatea sound in the direction of the wall and an amount of time is registeredfor an echo to be returned. The distance module 302 may use this amountof time to determine the distance. As such, the distance is from a pointof view of the viewer or image capture device (e.g., camera) to thefocal point.

The sizing module 304 determines sizing for the environment. In exampleembodiments, the sizing module 304 uses a marker (an object with knownstandard dimensions) in the environment image data to calculate thesizing. For example, if a door is shown in the environment image data,the sizing module 304 may assume that the door is a standard sized door(e.g., 36″×80″) or that a door knob is located at 36″ from the floor.Using these known standard dimensions, sizing for the environment may bedetermined. In another example, if the environment is an automobile, themarker may be a wheel well of the automobile. In this example, the usermay specify a type of automobile when providing the environment imagedata.

The scaling module 306 scales an image of the item based on the distanceand sizing determined by the distance module 302 and the sizing module304, respectively. Accordingly, the scaling module 306 may receive(e.g., from the navigation engine 210) or retrieve the item data (e.g.,from the database 126) for a selected item. The item data may include anitem image, dimensions, or an item identifier. If the item image anddimensions are provided, then the scaling module 306 may use the itemimage and the dimensions to scale the item image to the environmentbased on the sizing determined by the sizing module 304. Alternatively,if one of the image or dimension is not provided, the item identifiermay be used to look up the item in an item catalog which may contain animage and item information for the item (e.g., dimensions anddescription). In one embodiment, the scaling module 306 may look up andretrieve the item information from the item catalog.

Once the item image is scaled, the scaled item image may be oriented tothe environment by the orientation module 308. For example, if theenvironment image has a wall at a slight angle and the scaled item imageis to be placed on the wall, the orientation module 308 orients thescaled item image to the angle of the wall. It is noted thatfunctionality of any of the distance module 302, sizing module 304,scale module 306, and orientation module 308 may be combined into one ormore modules that can determine proper sizing and orientation for theitem image. In some embodiments, these combined modules may comprise ormake use of one or more gyroscopes or accelerometers.

The augmenting module 310 augments the scaled and oriented item imagewith the environment image to create an augmented reality image. Theaugmenting module 310 then provides the augmented reality image to theclient device 110.

The recommendation module 312 optionally provides recommendations foralternative items for the environment. For example, if the scaled andoriented item image appears too large for an indicated area on theenvironment image (e.g., as determined by the augmenting module 310),the recommendation module 312 may suggest one or more alternative itemsthat are smaller and will fit better in the indicated area. Accordingly,the recommendation module 312 may determine a dimension that is moreappropriate for the indicated area and perform a search (e.g., provideinstructions to the navigation engine 210 to perform a search) to findone or more alternative items. The recommendation module 312 may thenretrieve the item information and provide the alternative items as asuggestion to the user. In one embodiment, the alternative items may belisted on a side of a display that is displaying the augmented realityimage or on a pop-up window.

The save module 314 saves the environment image for later use. In oneembodiment, the environmental image may be stored to the database 126 ofthe networked environment 102. Alternatively, the environmental imagemay be stored to the client device 110. For example, the user may recordthe environmental image for a room and save the environmental image. Ata later time, the user may obtain an item image for an item that theuser is interested in augmenting into the saved environmental image. Thesave module 314 may access and retrieve the saved environmental image.

The purchase module 316 allows the user to purchase the item that isaugmented into the environment or an alternative item recommended by therecommendation module 312. In one embodiment, the purchase module 316provides a selection on or near the augmented reality image that whenselected takes the user to, for example, a purchase page for the item, astore front for a store that sells the item, or search page with searchresults for availability of the item for purchase. In anotherembodiment, an activation of the selection may initiate an automaticpurchase of the item. Once selected, the purchase module 316 performsthe corresponding actions to facilitate the purchase (e.g., send asearch for the item to the navigation engine 210, provide one or morelistings using the shopping engine 204, provide a webpage associatedwith the store engine 208).

FIG. 4 is a flow diagram of an example high-level method 400 forvisualization of an item in an environment using augmented reality. Inoperation 402, environment image data is received. In exampleembodiments, the imaging engine 212 may receive the environment imagedata from a client device 110. The environment image data may comprisean image of an environment into which the user wants to augment an itemimage.

In operation 404, a selection of an item to be augmented into theenvironment is received. In some embodiments, the navigation engine 210receives a selection of the item from the client device. In otherembodiments, the imaging engine 212 receives an image of an item thatthe user is interested in augmenting into the environment.

Based on the received selection of the item, item data is accessed inoperation 406. The access module 300 accesses item data for the selecteditem. The item data may be extracted from an item listing for the item,retrieved from an item catalog, or retrieved from a website of amanufacturer or reseller (e.g., using an item identifier of the item).

In operation 408, augmentation processing is performed. Augmentationprocessing takes the environment image data and the selected item andaugments or merges an item image for the item into an environment image.The operations of the augmentation processing will be discussed indetail with respect to FIG. 5.

The result of the augmentation is provided in operation 410. The resultmay comprise a video of the environment with the selected item augmentedinto the environment (referred to as “the augmented reality image”). Inexample embodiments, the augmenting module 310 provides the augmentedreality image to the client device 110 of the user that provided theenvironment image, the item selection, or both.

In operation 412, a determination is made as to whether a modificationis received. In some embodiments, the modification may be caused by themovement of the image capture device 113. For example, if the imagecapture device 113 is a video camera, then the modification is themovement within the environment as captured by the video camera. Inanother embodiment, the user may select an alternative item based on arecommendation provided by the recommendation module 312. Based on themodification, the method 400 may return to either operation 406 toaccess item data for the new item or to operation 408 to performaugmentation processing based on, for example, the movement within theenvironment.

FIG. 5 is a flow diagram of an example high-level method (operation 408)for generating the augmented reality image. In operation 502, a distanceis determined by the distance module 302. The distance module 302determines a distance to a focal point in the environment. The focalpoint may be a user selected area where an item image is to beaugmented. In one embodiment, the distance module 302 may usecapabilities (e.g., focus, echo based on sound) of the image capturedevice 113 of, or coupled to, the client device 110 to determine thedistance.

In operation 504, sizing for the environment is determined by the sizingmodule 304. In example embodiments, the sizing module 304 uses a markerin the environment image data to calculate the sizing Using knownstandard dimensions of the marker, sizing for the environment may bedetermined by the sizing module 304.

The item image is scaled in operation 506. The scaling module 306 scalesan image of the item based on the distance and sizing determined by thedistance module 302 and the sizing module 304, respectively.Accordingly, the scaling module 306 may receive or retrieve the itemdata including an item image, dimensions, or an item identifier. Theretrieved item data is then used in association with the determineddistance and sizing data to scale the item image.

Once the item image is scaled, the scaled item image may be oriented tothe environment, in operation 508, by the orientation module 308. Forexample, if the environment image has a wall at a slight angle and thescaled item image is to be placed on the wall, the orientation module308 orients the scaled item image to the angle of the wall.

In operation 510, the scaled and oriented item image is merged into theenvironment image. The augmenting module 310 augments the scaled andoriented item image with the environment image to create an augmentedreality image. It is noted that operations of FIG. 5 may be combinedinto fewer operations. Alternatively, some of the operations of FIG. 5may be optional.

FIG. 6A is a screenshot of an example of an environment image 600. Theenvironment image 600 may be captured by the image capture device 113 orretrieved from a storage location (e.g., database 126). In the presentexample, the environment image 600 is an image of a room in which a userwants to augment an item. In the present case, the environment image 600is taken from a location where the user may want to view the item. Forexample, if the item is a flat panel television, the environment image600 may be taken from a location where the user will position a sofa toview the flat panel television.

FIG. 6B is a screenshot of the environment image 600 with an augmenteditem image. In the present example, an image of a flat panel television602 selected by the user is positioned in a location indicated by theuser in the environment image 600. In one embodiment, additionalinformation may be obtained by activating a selection on a displaydisplaying the screenshot. For example, the user may select the image ofthe flat panel television 602 on the screenshot to open up a new window(e.g., a new window over a portion of the screenshot) that providespurchase information (e.g., where to buy, links to online stores, alisting for the item, prices), item information (e.g., dimensions,description), alternative recommendations (e.g., smaller or largeritems, comparable items, less expensive items, newer version of theitem), or any combination of these.

FIG. 6C illustrates an example screenshot displaying shoppinginformation in a new window pertaining to the selected item. In thepresent example, a window 604 provides shopping information including alowest, highest, and average price along with links to variousmarketplaces where the item may be purchased. The window 604 is providedwhen the user makes a selection of the image of the flat panel orperforms some other action to indicate a desire to receive additionalinformation.

FIG. 6D illustrates an example screenshot displaying the window 604providing additional information for the selected item. In the presentexample, the window 604 provides dimensions, weight, item identifiers,and product description of the selected item. Any information pertainingto the selected item may be provided in the window 604.

FIG. 6E illustrates an example screenshot displaying the window 604having recommendations. The recommendations may be provided by therecommendation module 312 and include a name of each recommended itemand an image of the recommended item. Other information, such as price,ratings, or dimensions, may also be provided in the window 604. Therecommendations may be, for example, items that may fit in the userdesignated location better, items less expensive than the selected item,items that are a new model of the selected item, or items that rankhigher based on other users of the system.

While the various examples of FIG. 6C-6E show provide the window 604 fordisplaying additional information, alternative embodiments may use otherdisplay mechanisms to provide the additional information. For example,the additional information may be displayed on a side of a displayshowing the environment image 600.

Modules, Components, and Logic

Additionally, certain embodiments described herein may be implemented aslogic or a number of modules, engines, components, or mechanisms. Amodule, engine, logic, component, or mechanism (collectively referred toas a “module”) may be a tangible unit capable of performing certainoperations and configured or arranged in a certain manner. In certainexample embodiments, one or more computer systems (e.g., a standalone,client, or server computer system) or one or more components of acomputer system (e.g., a processor or a group of processors) may beconfigured by software (e.g., an application or application portion) orfirmware (note that software and firmware can generally be usedinterchangeably herein as is known by a skilled artisan) as a modulethat operates to perform certain operations described herein.

In various embodiments, a module may be implemented mechanically orelectronically. For example, a module may comprise dedicated circuitryor logic that is permanently configured (e.g., within a special-purposeprocessor, application specific integrated circuit (ASIC), or array) toperform certain operations. A module may also comprise programmablelogic or circuitry (e.g., as encompassed within a general-purposeprocessor or other programmable processor) that is temporarilyconfigured by software or firmware to perform certain operations. Itwill be appreciated that a decision to implement a module mechanically,in dedicated and permanently configured circuitry, or in temporarilyconfigured circuitry (e.g., configured by software) may be driven by,for example, cost, time, energy-usage, and package size considerations.

Accordingly, the term “module” should be understood to encompass atangible entity, be that an entity that is physically constructed,permanently configured (e.g., hardwired), or temporarily configured(e.g., programmed) to operate in a certain manner or to perform certainoperations described herein. Considering embodiments in which modules orcomponents are temporarily configured (e.g., programmed), each of themodules or components need not be configured or instantiated at any oneinstance in time. For example, where the modules or components comprisea general-purpose processor configured using software, thegeneral-purpose processor may be configured as respective differentmodules at different times. Software may accordingly configure theprocessor to constitute a particular module at one instance of time andto constitute a different module at a different instance of time.

Modules can provide information to, and receive information from, othermodules. Accordingly, the described modules may be regarded as beingcommunicatively coupled. Where multiples of such modules existcontemporaneously, communications may be achieved through signaltransmission (e.g., over appropriate circuits and buses) that connectthe modules. In embodiments in which multiple modules are configured orinstantiated at different times, communications between such modules maybe achieved, for example, through the storage and retrieval ofinformation in memory structures to which the multiple modules haveaccess. For example, one module may perform an operation and store theoutput of that operation in a memory device to which it iscommunicatively coupled. A further module may then, at a later time,access the memory device to retrieve and process the stored output.Modules may also initiate communications with input or output devicesand can operate on a resource (e.g., a collection of information).

Example Machine Architecture and Machine-Readable Medium

With reference to FIG. 7, an example embodiment extends to a machine inthe example form of a computer system 700 within which instructions forcausing the machine to perform any one or more of the methodologiesdiscussed herein may be executed. In alternative example embodiments,the machine operates as a standalone device or may be connected (e.g.,networked) to other machines. In a networked deployment, the machine mayoperate in the capacity of a server or a client machine in server-clientnetwork environment, or as a peer machine in a peer-to-peer (ordistributed) network environment. The machine may be a personal computer(PC), a tablet PC, a set-top box (STB), a Personal Digital Assistant(PDA), a cellular telephone, a web appliance, a network router, a switchor bridge, or any machine capable of executing instructions (sequentialor otherwise) that specify actions to be taken by that machine. Further,while only a single machine is illustrated, the term “machine” shallalso be taken to include any collection of machines that individually orjointly execute a set (or multiple sets) of instructions to perform anyone or more of the methodologies discussed herein.

The example computer system 700 may include a processor 702 (e.g., acentral processing unit (CPU), a graphics processing unit (GPU) orboth), a main memory 704 and a static memory 706, which communicate witheach other via a bus 708. The computer system 700 may further include avideo display unit 710 (e.g., a liquid crystal display (LCD) or acathode ray tube (CRT)). In example embodiments, the computer system 700also includes one or more of an alpha-numeric input device 712 (e.g., akeyboard), a user interface (UI) navigation device or cursor controldevice 714 (e.g., a mouse), a disk drive unit 716, a signal generationdevice 718 (e.g., a speaker), and a network interface device 720.

Machine-Readable Storage Medium

The disk drive unit 716 includes a machine-readable storage medium 722on which is stored one or more sets of instructions 724 and datastructures (e.g., software instructions) embodying or used by any one ormore of the methodologies or functions described herein. Theinstructions 724 may also reside, completely or at least partially,within the main memory 704, the static memory 706, or within theprocessor 702 during execution thereof by the computer system 700, withthe main memory 704 and the processor 702 also constitutingmachine-readable media.

While the machine-readable storage medium 722 is shown in an exampleembodiment to be a single medium, the term “machine-readable storagemedium” may include a single medium or multiple media (e.g., acentralized or distributed database, or associated caches and servers)that store the one or more instructions. The term “machine-readablemedium” shall also be taken to include any tangible medium that iscapable of storing, encoding, or carrying instructions for execution bythe machine and that cause the machine to perform any one or more of themethodologies of embodiments of the present invention, or that iscapable of storing, encoding, or carrying data structures used by orassociated with such instructions. The term “machine-readable storagemedium” shall accordingly be taken to include, but not be limited to,solid-state memories and optical and magnetic media. Specific examplesof machine-readable storage media include non-volatile memory, includingby way of example semiconductor memory devices (e.g., ErasableProgrammable Read-Only Memory (EPROM), Electrically ErasableProgrammable Read-Only Memory (EEPROM), and flash memory devices);magnetic disks such as internal hard disks and removable disks;magneto-optical disks; and CD-ROM and DVD-ROM disks.

Transmission Medium

The instructions 724 may further be transmitted or received over acommunications network 726 using a transmission medium via the networkinterface device 720 and utilizing any one of a number of well-knowntransfer protocols (e.g., HTTP). Examples of communication networksinclude a local area network (LAN), a wide area network (WAN), theInternet, mobile telephone networks, POTS networks, and wireless datanetworks (e.g., WiFi and WiMax networks). The term “transmission medium”shall be taken to include any intangible medium that is capable ofstoring, encoding, or carrying instructions for execution by themachine, and includes digital or analog communications signals or otherintangible medium to facilitate communication of such software.

Although an overview of the inventive subject matter has been describedwith reference to specific example embodiments, various modificationsand changes may be made to these embodiments without departing from thebroader spirit and scope of embodiments of the present invention. Suchembodiments of the inventive subject matter may be referred to herein,individually or collectively, by the term “invention” merely forconvenience and without intending to voluntarily limit the scope of thisapplication to any single invention or inventive concept if more thanone is, in fact, disclosed.

The embodiments illustrated herein are described in sufficient detail toenable those skilled in the art to practice the teachings disclosed.Other embodiments may be used and derived therefrom, such thatstructural and logical substitutions and changes may be made withoutdeparting from the scope of this disclosure. The Detailed Description,therefore, is not to be taken in a limiting sense, and the scope ofvarious embodiments is defined only by the appended claims, along withthe full range of equivalents to which such claims are entitled.

Moreover, plural instances may be provided for resources, operations, orstructures described herein as a single instance. Additionally,boundaries between various resources, operations, modules, engines, anddata stores are somewhat arbitrary, and particular operations areillustrated in a context of specific illustrative configurations. Otherallocations of functionality are envisioned and may fall within a scopeof various embodiments of the present invention. In general, structuresand functionality presented as separate resources in the exampleconfigurations may be implemented as a combined structure or resource.Similarly, structures and functionality presented as a single resourcemay be implemented as separate resources. These and other variations,modifications, additions, and improvements fall within a scope ofembodiments of the present invention as represented by the appendedclaims. The specification and drawings are, accordingly, to be regardedin an illustrative rather than a restrictive sense.

What is claimed is:
 1. A method implemented by a client device, themethod comprising: receiving a selection of an item for placement intoan image of an environment; receiving environment image data containingthe image of the environment; scaling an item image for the selecteditem based on dimensions of the environment; generating an augmentedreality image that depicts the scaled item image disposed in theenvironment; receiving a selection of the scaled item image in theaugmented reality image; and displaying item information in response toreceiving the selection of the scaled item image.
 2. The method of claim1, wherein the dimensions of the environment are determined based on theenvironment image data.
 3. The method of claim 2, further comprisingdetermining the dimensions of the environment using a focus capabilityof an image capture device of the client device.
 4. The method of claim1, wherein the image of the environment comprises one of a plurality offrames of a video, the method further comprising performing the scalingand the generating for each of the plurality of frames of the video. 5.The method of claim 1, wherein generating the augmented reality imagecomprises receiving an indication of a placement location for the itemimage relative to the environment and positioning the scaled item imageat the placement location.
 6. The method of claim 1, wherein displayingthe item information comprises displaying at least one dimensionassociated with the item.
 7. The method of claim 1, wherein displayingthe item information comprises displaying a weight associated with theitem.
 8. The method of claim 1, wherein displaying the item informationcomprises displaying a product description associated with the item. 9.The method of claim 1, wherein displaying the item information comprisesdisplaying a link that is selectable to initiate purchase of the item.10. The method of claim 1, wherein displaying the item informationcomprises displaying a recommendation for an alternative item.
 11. Themethod of claim 1, wherein displaying the item information comprisesdisplaying an item identifier associated with the item.
 12. A methodimplemented by a client device, the method comprising: receiving aselection of an item for placement into an image of an environment;receiving environment image data containing the image of theenvironment; scaling an item image for the selected item based ondimensions of the environment; generating an augmented reality imagethat depicts the scaled item image disposed in the environment;receiving a selection of the scaled item image in the augmented realityimage; and displaying at least one dimension associated with the item inthe augmented reality image responsive to receiving the selection of thescaled item image.
 13. The method of claim 12, wherein the dimensions ofthe environment are determined based on the environment image data. 14.The method of claim 13, further comprising determining the dimensions ofthe environment using a focus capability of an image capture device ofthe client device.
 15. The method of claim 12, wherein the image of theenvironment comprises one of a plurality of frames of a video, themethod further comprising performing the scaling and the generating foreach of the plurality of frames of the video.
 16. The method of claim12, wherein generating the augmented reality image comprises receivingan indication of a placement location for the item image relative to theenvironment and positioning the scaled item image at the placementlocation.
 17. A system comprising: at least one processor; and a storagedevice comprising instructions that are executable by the at least oneprocessor to perform operations comprising: receiving a selection of anitem for placement into an image of an environment; receivingenvironment image data containing the image of the environment; scalingan item image for the selected item based on dimensions of theenvironment; generating an augmented reality image that depicts thescaled item image disposed in the environment; receiving a selection ofthe scaled item image in the augmented reality image; and displaying atleast one dimension associated with the item in the augmented realityimage responsive to receiving the selection of the scaled item image.18. The system of claim 17, wherein the dimensions of the environmentare determined based on the environment image data, the operationsfurther comprising determining the dimensions of the environment using afocus capability of an image capture device of the client device. 19.The system of claim 17, wherein the image of the environment comprisesone of a plurality of frames of a video, the operations furthercomprising performing the scaling and the generating for each of theplurality of frames of the video.
 20. The system of claim 17, whereingenerating the augmented reality image comprises receiving an indicationof a placement location for the item image relative to the environmentand positioning the scaled item image at the placement location.